// pages/shop/index/index.js
const call = require('../../../utils/request.js')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    searchValue:'', //搜索框
    carouselList:[], //轮播图
    shopType:[],//商品类别
    typeIndex: 0, //商品类别索引
    pageIndex: 1, //当前页数
    pageSize:0, //一页总数
    carCount:0,//购物车总数
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getType();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    if(this.data.shopType.length>0){
      this.getList();
    }
    this.getCarList();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    const pageIndex = this.data.pageIndex;
    if(this.data.list[pageIndex].length>0){
      this.setData({
        pageIndex:(pageIndex+1)
      })
      this.getList();
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  /**
   * 轮播图点击
   */
  chomeCarouselClick(e){
    const index = e.currentTarget.dataset.index;
    const date = this.data.carouselList[index];
    let arr = [];
    for(let i in date.params){
      arr.push(`${i}=${date.params[i]}`);
    }
    wx.navigateTo({
      url: `${date.route}?${arr.join('&')}`,
    })
  },

  /**
   * 获取商品类别
   */
  getType(){
    wx.showLoading({
      title: '正在获取分类',
      mask:true
    })
    call.post('/api/shop/get_categories').then(res=>{
      wx.hideLoading();
      console.log("获取商品分类",res)
      if(res.data.data){
        const dataArr = res.data.data;
        let obj = [];
        for(let i of dataArr.categories){
          obj.push({
            id:i.id,
            category_name:i.category_name
          })
        }
        this.setData({
          shopType:obj,
          carouselList:dataArr.loop
        })
        this.getList();
      }
    })
  },

  /**
   * 选择商品类别
   */
  chooseType(e){
    const id = e.currentTarget.dataset.idx;
    const index = e.currentTarget.dataset.index;
    const typeIndex = this.data.typeIndex;
    if(index == typeIndex){return;}
    else{
      this.setData({
        typeIndex:index,
        pageIndex:1
      })
      this.getList();
    }
  },

  /**
   * 获取商品列表
   */
  getList(){
    const page = this.data.pageIndex;
    const data = this.data.list;
    if(this.data.shopType.length==0){return;}

    wx.showLoading({
      title: '正在加载商品',
      mask:true
    })
    // console.log(this.data.shopType)
    const typeId = this.data.shopType[this.data.typeIndex].id;
    call.post('/api/shop/goods_list',{
      category_id: typeId,
      page:page,
      product_name:this.data.searchValue
    }).then(res=>{
      console.log("获取商品列表",res.data.data);
      if(page == 1){
        this.setData({
          [`list`]: {1: res.data.data.list},
          pageSize: res.data.data.meta.per_page
        })
      }else{
        this.setData({
          [`list.${page}`]: res.data.data.list
        })
      }
      wx.hideLoading();
    })
  },

  /**
   * 页面跳转
   */
  toDetail(e){
    const id = e.currentTarget.dataset.idx;
    wx.navigateTo({
      url: `../../../shop/goodsDetail/goodsDetail?id=${id}`,
    })
  },
  toUrl(e){
    const url = e.currentTarget.dataset.url;
    wx.navigateTo({
      url: url,
    })
  },

  /**
   * 搜索
   */
  bindChange(e){
    this.setData({
      searchValue:e.detail.value
    })
    this.getList();
  },

  /**
   * 获取购物车数量
   */
  getCarList(){
    call.post('/api/shop/cart_goods_num',{
      page: this.data.pageIndex
    }).then(res=>{
      console.log("获取购物车商品数量",res)
      this.setData({
        carCount:res.data.data
      })
    })
  },

    /**
   * 添加商品到购物车
   */
  addToCar(e){
    const id1 = e.currentTarget.dataset.id1;
    const id2 = e.currentTarget.dataset.id2;
    wx.showLoading({
      title: '正在添加',
      mask:true
    })
    call.post('/api/shop/add_to_cart',{
      product_id: id1,
      product_spec_id: id2,
      count: 1
    }).then(res=>{
      wx.hideLoading();
      if(res.data.code == 0){
        wx.showToast({
          title: '已成功加入购物车',
          icon:'none'
        })
        this.getCarList();
      }
    })
  },
})